home *** CD-ROM | disk | FTP | other *** search
- unit Outl2;
- { PC PLUS sample Outliner program.
-
- Demonstrates how to use Delphi's outline object to create a collapsible
- outliner. Lets you add and delete items and save/load outlines to/from disk }
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, Grids, Outline, ExtCtrls, StdCtrls, Menus;
-
- type
- TForm1 = class(TForm)
- Panel1: TPanel;
- Outline1: TOutline;
- ItemTextEd: TEdit;
- AddItemBtn: TButton;
- DelBtn: TButton;
- OpenDialog1: TOpenDialog;
- SaveDialog1: TSaveDialog;
- MainMenu1: TMainMenu;
- FileMenu: TMenuItem;
- OpenMenuItem: TMenuItem;
- NewMenuItem: TMenuItem;
- SaveMenuItem: TMenuItem;
- SaveAsMenuItem: TMenuItem;
- ExitMenuItem: TMenuItem;
- procedure AddItemBtnClick(Sender: TObject);
- procedure DelBtnClick(Sender: TObject);
- procedure Outline1Click(Sender: TObject);
- procedure ExitMenuItemClick(Sender: TObject);
- procedure NewMenuItemClick(Sender: TObject);
- procedure SaveMenuItemClick(Sender: TObject);
- procedure SaveAsMenuItemClick(Sender: TObject);
- procedure OpenMenuItemClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- function ConfirmFileSave(FileName : string) : boolean;
- begin
- if MessageDlg(FileName + ' already exists. Save anyway?',
- mtConfirmation, mbYesNoCancel, 0)
- = mrYes then
- ConfirmFileSave := true
- else
- ConfirmFileSave := false;
- end;
-
- procedure TForm1.AddItemBtnClick(Sender: TObject);
- { Adds text from ItemTextEd text box to the outline as a 'child' item -
- that is, an item indented one level }
- var
- ItemText : string;
- begin
- ItemText := ItemTextEd.Text;
- If ItemText = '' then
- MessageDlg('You must enter text for this item!', mtInformation,
- [mbOk], 0)
- else
- If Outline1.Lines.Count = 0 then
- Outline1.Add(0,ItemText)
- else
- begin
- Outline1.AddChild(Outline1.SelectedItem, ItemText );
- { expand selected item so you can see your new subitem }
- Outline1[Outline1.SelectedItem].Expanded := true;
- { move highlight to new subitem }
- end;
- { give focus to text edit box }
- ActiveControl:= ItemTextEd;
- end;
-
- procedure TForm1.DelBtnClick(Sender: TObject);
- { Deletes the current item and all child items beneath it.
- You may want to add a Yes/No message box to let the user
- confirm this deletion }
- begin
- If Outline1.SelectedItem > 0 then
- Outline1.Delete(Outline1.SelectedItem);
- { give focus to text edit box }
- ActiveControl:= ItemTextEd;
- end;
-
- procedure TForm1.Outline1Click(Sender: TObject);
- { Just to see how items are indexed, try clicking the
- outline. The index will be displayed in the Form Caption }
- begin
- Caption := '[Selected item index: ' + IntToStr(Outline1.SelectedItem) + ']';
- { give focus to text edit box }
- ActiveControl:= ItemTextEd;
- end;
-
- procedure TForm1.ExitMenuItemClick(Sender: TObject);
- begin
- Close;
- end;
-
- procedure TForm1.NewMenuItemClick(Sender: TObject);
- begin
- Outline1.Clear;
- OpenDialog1.FileName := '*.otl';
- end;
-
- { Some basic File Saving and Opening procedures }
- procedure TForm1.SaveAsMenuItemClick(Sender: TObject);
- var
- SaveFile : boolean;
- begin
- SaveFile := true;
- with SaveDialog1 do
- if Execute then
- begin
- if FileExists(FileName) then
- SaveFile := ConfirmFileSave(FileName);
- If SaveFile then
- begin
- Outline1.Lines.SaveToFile(Filename);
- OpenDialog1.Filename := Filename;
- end;
- end;
- end;
-
-
- procedure TForm1.SaveMenuItemClick(Sender: TObject);
- begin
- if ((OpenDialog1.Filename = '') or (OpenDialog1.Filename = '*.otl')) then
- SaveAsMenuItemClick(Sender)
- else
- Outline1.Lines.SaveToFile(OpenDialog1.Filename);
- end;
-
-
- procedure TForm1.OpenMenuItemClick(Sender: TObject);
- begin
- with OpenDialog1 do
- if Execute then
- begin
- if FileExists(FileName) Then
- Outline1.Lines.LoadFromFile(FileName)
- else
- MessageDlg('Sorry. Can''t load this file. '+ FileName +
- ' does not exist!',
- mtInformation, [mbOK], 0);
- end;
- end;
-
- end.
-